System and method for storing and retrieving filenames and files in computer memory

ABSTRACT

The invention receives a request to store a file having a filename written in a first text encoding, converts the filename into a Unicode filename and stores the Unicode filename and the file into memory. The invention then sets a flag, associated with the memory, indicating that a first text encoding has been used. To retrieve a Unicode filename, the invention receives a request to locate a Unicode filename from memory. Next, the invention uses a predetermined text encoding to convert the filename into Unicode. The invention then searches for the Unicode filename in the memory. If the Unicode filename is not found, the invention uses a next text encoding from the set of text encodings which have been used, to repeat the conversion and searches the memory until the Unicode filename is identified. Lastly, the Unicode file is retrieved.

This application is a continuation application of co-pending U.S. patentapplication Ser. No. 11/360,797, filed Feb. 22, 2006, which is acontinuation application of co-pending U.S. patent application Ser. No.10/177,715, filed Jun. 20, 2002, now issued as U.S. Pat. No. 7,013,314,which is a continuation of co-pending U.S. patent application Ser. No.09/213,199, filed Dec. 17, 1998, now issued as U.S. Pat. No. 6,434,574.

BACKGROUND OF THE INVENTION

1. Field of the Invention

This invention relates generally to computer operating systems and moreparticularly to storing and retrieving filenames in computer memory.

2. Description of the Background Art

The storing and retrieving of filenames in computer memory is extremelyimportant to all computer users. When a computer user saves a file andfilename into computer memory, it is important that the filename remainuniquely identifiable regardless of any other filenames or textencodings saved in the memory. If a filename is not uniquelyidentifiable, then a computer may be unable to retrieve the named file.Further, if the memory containing the filename is moved to a differentcomputer then that filename must remain identifiable if the named fileis to be retrievable.

Conventionally, a filename identity is represented by a string of bytes(“encoding”) stored in computer memory. A conventional Roman characterbased computer system will interpret the encoding to represent Romancharacters in the American Standard Code for Information Interchange(ASCII) character set, even if the encoding actually represents Japanesecharacters. For example, a Japanese computer user may save a file with aJapanese filename onto a removable memory device, such as a floppy disk.The Japanese filename encoding is interpreted by a conventional Japanesecharacter based computer system to be Japanese characters. However, ifthe Japanese user then inserts the removable memory device into aconventional Roman character based computer system, the Roman computersystem will assume the Japanese encoding actually represents a Romancharacter filename rather than a Japanese character filename.

A problem with the conventional Roman character based computer system isthat because it assumes that a filename is in Roman characters, it mayequate two non-Roman character filenames as being identical. This isbecause a Roman computer system treats uppercase and lowercase lettersin a filename as equivalent. Therefore, a Roman computer system wouldassume that the filenames “Example.txt” and “example.txt” (and theirassociated files) are the same even though they are represented bydifferent strings of bytes, possibly leading to the assumption that twonon-Roman filenames, which vary only by case, are identical. If a Romancomputer system misinterprets a non-Roman filename, the system maymistakenly open the wrong file or may refuse to create a new file sinceit believes that that filename is already in use.

FIG. 1 is a diagram of Japanese characters in which characters withinany given column appear identical to a conventional Roman characterbased computer system. For example, characters 104, 106, 108 and 110 incolumn 102 appear identical to a prior art Roman computer system becauseit treats all filenames as if they were written in the Roman alphabet.Therefore, if two Japanese filenames differed by just one character,such as characters 104 and 106, a prior art Roman computer system wouldactually consider them to be identical. Similar problems occur withother text encodings but the problem is most acute in Japanese andChinese text encodings since in these languages each character is a wordand therefore filenames are shorter and more likely to vary by just onecharacter.

A Roman character based prior art system can only store filenames inRoman text encodings as partially represented by ASCII text encodingtable 200 of FIG. 2. Each Roman character has its own encoding. Forinstance, character 202, the letter “A”, is stored as 7-bit encoding204. However, because ASCII only allows 7 bit encodings, which meansthat ASCII can encode only 128 characters, basic ASCII encoding table200 contains no encodings for Japanese or any other language that usesnon-Roman characters. Japanese and other east-asian languages can easilyhave several thousand characters that need to be encoded. Therefore, aprior art Roman character based computer system cannot always accuratelystore or retrieve some east-asian filenames or other non-Romanfilenames.

Therefore, an improved system and method are needed to store andretrieve filenames and files in a computer system.

SUMMARY OF THE INVENTION

The present invention provides a system and method for accuratelystoring and retrieving filenames in computer memory by convertingfilenames into Unicode text encoding. The Unicode Standard, like theASCII text encoding standard and others, encodes each character as anumerical value. However, instead of encoding simply in ASCII, Unicodetext encoding encodes all the characters used in the world's majorwritten languages, including Greek, Arabic, Tamil, Thai, Japanese,Korean and many others.

The invention stores a filename into computer memory by firstdetermining a default text encoding based upon which it converts thefilename into Unicode text encoding. If the conversion is successful,the invention stores the Unicode text-encoded filename into computermemory and sets a bit that corresponds to the default text encoding inan Encoding Bitmap located in computer memory.

If the conversion based on the default text encoding is unsuccessful,the invention tries using Roman text encoding to convert the filenameinto Unicode text encoding. Once the conversion is complete, theinvention stores the filename into computer memory and sets the bit thatcorresponds to Roman text encoding in the encoding bitmap. The inventionassumes that any sequence of bytes can be converted to Unicode usingRoman text encoding, which assigns a meaning to every possible bytesequence. If conversion using the default encoding fails, conversionusing Roman text encoding will definitely succeed, even if it producesthe wrong Unicode characters.

To retrieve a filename, the invention first converts the retrievalrequest into Unicode text encoding based on the default text encoding ofthe system. The invention then searches the computer memory for amatching Unicode text encoded filename. If the search is successful, thesearch result is returned. If the search is not successful, theinvention determines if Roman text encoding is the default textencoding. If Roman text encoding is not the default text encoding, theinvention uses Roman text encoding to convert the retrieval request intoUnicode text encoding and then searches the computer memory for amatching Unicode filename. If the search is successful, a search resultis returned.

If the search is not successful, or if Roman text encoding is thedefault text encoding, the invention next retrieves a list of all textencodings previously used in the system as specified in an EncodingBitmap located in the computer memory of the system. The invention thenconverts the retrieval request into Unicode text encoding based on eachtext encoding specified in the encoding bitmap and uses each conversionto search the computer memory for a match. If a match is found, theinvention returns the search result.

Finally, if the search is still not successful the invention convertsthe retrieval request into Unicode text encoding based on any other textencodings installed in the computer memory that have yet to be tried.The invention then uses each conversion in searching the computer memoryfor a matching Unicode filename. If the search is successful, theinvention returns the search result. If the search is not successful,the invention returns an error message.

Accordingly, the present invention not only more accurately andefficiently stores and retrieves filenames in computer memory but alsoallows multiple encodings to be used in computer memory over time.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of Japanese characters in columns that appearidentical when storing or retrieving a filename using a prior artsystem;

FIG. 2 is a diagram of ASCII text encodings used by a prior art system;

FIG. 3 is a block diagram of a computer system suitable for use with thepresent invention;

FIG. 4 is a block diagram of the preferred allocation of the memoryshown in FIG. 3;

FIG. 5 is a block diagram of the preferred embodiment of the UnicodeTable in the memory shown in FIG. 4;

FIG. 6 is a block diagram of the preferred embodiment of the EncodingBitmap in the memory shown in FIG. 4;

FIG. 7 is a flowchart of preferred method steps for storing a filenameinto computer memory according to the present invention; and

FIGS. 8 a and 8 b are a flowchart of preferred method steps forretrieving a filename from computer memory according to the presentinvention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

The present invention relates to an improvement in storing filenames in,and retrieving them from, computer memory.

FIG. 3 is a block diagram of a computer system suitable for use with theinvention. Computer system 300 preferably includes a Central ProcessingUnit (CPU) 304, a monitor 306, a keyboard 308, memory 310, and an inputand output (I/O) interface 312, all connected by a system bus 302.Memory 310 may comprise a hard disk drive, random access memory (RAM) orany other appropriate memory configuration.

FIG. 4 is a block diagram of the preferred allocation of memory 310,which stores a Unicode table 402 that contains 16 bit encodings for mostmodern written languages as discussed further in conjunction with FIG.5. Memory 310 also stores a File Manager 404 which manages document 406and other documents with their respective filenames that are stored inmemory 310, as discussed further in conjunction with FIG. 7, FIG. 8 aand FIG. 8 b. Memory 310 also stores text encodings 408 for variouslanguages such as Roman, Greek and Japanese, and an encoding bitmap 410which lists all previously used text encodings, as discussed further inconjunction with FIG. 6.

FIG. 5 is a diagram of the preferred embodiment of the Unicode Table402, which contains bit encodings for most of the world's modern writtenlanguages. Unicode, published as The Unicode Standard, WorldwideCharacter Encoding, is now the standard for representing text. Unicodeuses a 16-bit coding scheme that allows for 65,536 distinctcharacters—more than enough to include all languages in use today.Currently, Unicode text encoding covers 38,887 different characters. Forexample, the Roman character “A” 502 is represented by bit encoding 504.The Greek character “α” 506 is represented by bit encoding 508. TheChinese character for sky (“tian” in Mandarin Chinese and “tin” inCantonese) 510 is represented by bit encoding 512. Most modern writtenlanguages can be encoded using Unicode text encoding. However, somerelatively obscure languages in current use, such as Cherokee andMongolian, cannot be encoded using Unicode text encoding. Accordingly,almost any filename can be accurately represented in its native languageusing Unicode text encoding instead of having to be converted, possiblyinaccurately, to Roman characters.

FIG. 6 is a diagram of the preferred embodiment of the FIG. 4 EncodingBitmap 410, which contain a list of all text encodings previously usedin system 300. Whenever a given text encoding is used in system 300,file manager 404 sets a relevant field in encoding bitmap 410. Forinstance, if field 602 represents Hebrew and Hebrew has not been used insystem 300, field 602 contains a 0. If field 604 represents Arabic andArabic has been used in system 300, field 604 contains a 1.

FIG. 7 is a flowchart of steps in a preferred method 700 for filemanager 404 to store a filename into computer memory 310 according tothe invention. In step 703, file manager 404 receives a “save” request,which contains filename information for document 406. Alternatively, the“save” request can be a request to change a filename. In step 704, filemanager 404 creates a file and/or saves document 406 in memory 310. Ifthe save request in step 703 was a change filename request, step 704 canbe skipped. The contents of the document 406 can also be saved in memory310 after completion of the method 700.

In step 706, file manager 404 determines a default text encoding ofsystem 300, which in this case is a text encoding used to view filenameson monitor 306. In step 708, file manager 404 uses the default textencoding determined in step 706 to convert the filename to a Unicodename.

Step 710 determines whether the step 708 conversion using the defaulttext encoding was successful. If the step 708 conversion was notsuccessful, then in step 712 file manager 404 uses Roman text encodingto convert the user-entered filename to Unicode text encoding. Note thatstep 712 cannot fail. Even if the filename was not actually written inRoman characters, method 700 will still convert the user-enteredfilename to Unicode using Roman encoding. This is because all possiblebyte sequences yield valid Roman characters that can be converted intoUnicode. The filename will not be in the intended characters, but thefilename will be individually distinguishable.

Once the step 712 conversion is complete, or if the step 708 conversionwas successful, then in step 714 file manager 404 saves the Unicode nameto memory 310. In step 716, file manager 404 sets a bit in encodingbitmap 410 that corresponds to the type of text encoding used to convertthe user-entered filename. In step 718 method 700 ends.

FIGS. 8 a and 8 b are a flowchart of steps in a preferred method 800 forfile manager 404 to retrieve a filename from computer memory accordingto the invention. In step 804 file manager 404 receives a search requestwhich was. generated when a system 300 user attempted to open document406, or any other document, stored in memory 310. The search requestcontains a user-entered filename. In step 805 file manager 404 convertsthe user-entered filename to Unicode text encoding based on the defaulttext encoding of system 300. As discussed in conjunction with FIG. 7,the default text encoding in this example is the text encoding used toview filenames on monitor 306. If the step 805 conversion was notsuccessful, then file manager 404 proceeds to step 816 as discussedbelow. If the conversion was successful, then in step 807 file manager404 searches memory 310 for the converted filename. If file manager 404locates a matching filename, file manager 404 returns the search resultand retrieves the file having the matching filename in step 812 andmethod 800 ends in step 814.

If the step 807 search did not locate a matching filename, or if thestep 805 conversion was not successful, then in step 816 file manager404 determines if Roman text encoding is the default text encoding ofsystem 300. If Roman text encoding is not the default text encoding,then in step 817 file manager 404 converts the user-entered filename toUnicode text encoding using Roman text encoding. In step 819, filemanager 404 searches memory 310 for the converted filename. If it findsa matching filename, then in step 822 file manager 404 returns a searchresult and retrieves the file having the matching filename, and method800 ends in step 824.

If the step 819 search did not locate a matching filename, or if in step816 file manager 404 determined that Roman text encoding is the defaulttext encoding of system 300, then in step 826 file manager 404 retrievesa list of text encodings from encoding bitmap 410.

Next, in step 827, file manager 404 converts the user-entered filenameinto Unicode text encoding using a text encoding from the list retrievedin step 826 from encoding bitmap 410. File manager 404 converts thefilename into Unicode using only text encodings not already used insteps 805 and 817. However, in practice system 300 will probably onlyhave installed one or two text encodings—usually Roman and a local textencoding such as Japanese. The local text encoding is normally set asthe default text encoding that is tried in step 805. Therefore, method800 generally is successful at either step 808 or step 820 and does notreach step 826.

If the step 827 conversion is not successful, then File Manager 404proceeds to step 834. If the step 827 conversion is successful, then instep 829 file manager 404 uses the converted user-entered filename tosearch memory 310 for a matching Unicode filename. If in step 830 thesearch is successful, then in step 832 file manager 404 returns a searchresult and retrieves the file having the matching filename, and in step833 method 800 ends. If in step 830 the search was unsuccessful, or ifthe step 827 conversion was unsuccessful, then in step 834 file manager404 determines if there are other text encodings listed in encodingbitmap 410 that have not been tried. If there are some text encodingsthat have not yet been tried, then file manager 404 returns to step 827.

If in step 834 all text encodings listed in encoding bitmap 410 havebeen tried, then file manager 404 proceeds to step 835 and tries toconvert the user-entered filename into Unicode text encoding based onany other text encodings installed in system 300. As in step 827, filemanager 404 tries conversions to Unicode text encoding using onlypreviously untried text encodings. if the step 835 conversion isunsuccessful, then File Manager 404 proceeds to step 844. Otherwise, instep 837, file manager 404 searches memory 310 for a matching Unicodefilename. If the search is successful, then in step 840 file manager 404returns a search result and retrieves the file having the matchingfilename, and in step 842 method 800 ends. If the search isunsuccessful, but in step 844 not all text encodings have been tried,then file manager 404 returns to step 835 and tries to convert theuser-entered filename to Unicode text encoding using another textencoding. If in step 844 all the text encodings installed in system 300have been tried, then in step 846 file manager 404 returns an errorresult and in step 848 the method 800 halts.

The invention has been explained with reference to a preferredembodiment. Other embodiments will be apparent to those skilled in theart in light of this disclosure. For example, the invention may readilybe implemented using configurations other than those described in thepreferred embodiment. Additionally, the invention may effectively beused in conjunction with systems other than the one described as thepreferred embodiment. Therefore, these and other variations upon thepreferred embodiments are intended to be covered by the appended claims.

1. A method for storing filenames in and retrieving filenames from a memory device, comprising the steps of: determining a default text encoding based on a text encoding used to display text on a monitor coupled to said memory device; converting a filename from said default text encoding to Unicode text encoding; storing the converted filename in said memory device; receiving a retrieval request; converting said retrieval request from said default text encoding to Unicode text encoding; searching said memory device for a filename which matches the converted retrieval request; retrieving the file having the matching filename from said memory device; and modifying an encoding bitmap to indicate the use of said default text encoding.
 2. The method of claim 1 wherein said step of converting a filename is unsuccessful, and including the further step of next converting said filename to Unicode text encoding based on Roman text encoding.
 3. The method of claim 2 wherein said step of converting said retrieval request is unsuccessful and including the further steps of: determining if Roman text encoding is a default text encoding in said memory device; and if Roman text encoding is not a default text encoding, then using Roman text encoding to convert said retrieval request to Unicode text encoding.
 4. The method of claim 3 wherein said step of searching is unsuccessful and including the further steps of: retrieving a list of previously-used text encodings from said encoding bitmap: using text encodings from said list to convert said retrieval request to Unicode text encoding; and repeating said step of searching.
 5. The method of claim 4 wherein said step of searching is unsuccessful and including the further steps of: converting said retrieval request to Unicode text encoding based on any text encodings installed in said memory device; and repeating said step of searching.
 6. The method of claim 4 wherein said step of converting said retrieval request is unsuccessful and including the further step of converting said retrieval request to Unicode text encoding based on any text encodings installed in said memory device.
 7. The method of claim 2 wherein said step of searching is unsuccessful and including the further steps of: determining if Roman text encoding is a default text encoding in said memory device; if Roman text encoding is not a default text encoding, then using Roman text encoding to convert said retrieval request to Unicode text encoding; and repeating said step of searching.
 8. The method of claim 1 wherein said searching step is unsuccessful and including the further steps of: converting said filename to Unicode text encoding based on Roman text encoding; and repeating said step of searching.
 9. A system for storing filenames in and retrieving filenames from a memory device, comprising: means for determining a default text encoding based on a text encoding used to display text on a monitor coupled to said memory device; means for converting a filename from said default text encoding to Unicode text encoding; means for storing the converted filename in said memory device; means for receiving a retrieval request; means for converting said retrieval request from said default text encoding to Unicode text encoding; means for searching said memory device for a filename which matches the converted retrieval request; means for retrieving the file having the matching filename from said memory device; and means for modifying an encoding bitmap to indicate the use of said default text encoding.
 10. The system of claim 9 wherein said means for converting a filename is unsuccessful, and including further means for next converting said filename to Unicode text encoding based on Roman text encoding.
 11. The system of claim 10 wherein said means for converting said retrieval request is unsuccessful and further including: means for determining if Roman text encoding is a default text encoding in said memory device; and if Roman text encoding is not a default text encoding, then means for using Roman text encoding to convert said retrieval request to Unicode text encoding
 12. The system of claim 11 wherein said means for searching is unsuccessful and further including: means for retrieving a list of previously-used text encodings from said encoding bitmap; means for using text encodings from said list to convert said retrieval request to Unicode text encoding; and means for repeating said means for searching.
 13. The system of claim 12 wherein said means for searching is unsuccessful and further including: means for converting said retrieval request to Unicode text encoding based on any text encodings installed in said memory device; and means for repeating said step of searching.
 14. The system of claim 12 wherein said means for converting said retrieval request is unsuccessful and further including means for converting said retrieval request to Unicode text encoding based on any text encodings installed in said memory device.
 15. The system of claim 10 wherein said means for searching is unsuccessful and further including: means for determining if Roman text encoding is a default text encoding in said memory device; means for if Roman text encoding is not a default text encoding, then using Roman text encoding to convert said retrieval request to Unicode text encoding; and means for repeating said step of searching.
 16. The system of claim 9 wherein said means for searching is unsuccessful and further including: means for converting said filename to Unicode text encoding based on Roman text encoding; and means for repeating said step of searching.
 17. A computer-readable medium for storing instructions for causing a computer to perform the steps of: determining a default text encoding based on a text encoding used to display text on a monitor coupled to a memory device; converting a filename from said default text encoding to Unicode text encoding; storing the converted filename in said memory device; receiving a retrieval request; converting said retrieval request from said default text encoding to Unicode text encoding; searching said memory device for a filename which matches the converted retrieval request; retrieving the file having the matching filename from said memory device; and modifying an encoding bitmap to indicate the use of said default text encoding.
 18. The computer-readable medium of claim 17 wherein said step of converting a filename is unsuccessful, and including the further step of next converting said filename to Unicode text encoding based on Roman text encoding.
 19. The computer-readable medium of claim 18 wherein said step of converting said retrieval request is unsuccessful and including the further steps of: determining if Roman text encoding is a default text encoding in said memory device; and if Roman text encoding is not a default text encoding, then using Roman text encoding to convert said retrieval request to Unicode text encoding.
 20. The computer-readable medium of claim 19 wherein said step of searching is unsuccessful and including the further steps of: retrieving a list of previously-used text encodings from said encoding bitmap; using text encodings from said list to convert said retrieval request to Unicode text encoding; and repeating said step of searching.
 21. The computer-readable medium of claim 20 wherein said step of searching is unsuccessful and including the further steps of: converting said retrieval request to Unicode text encoding based on any text encodings installed in said memory device; and repeating said step of searching.
 22. The computer-readable medium of claim 20 wherein said step of converting said retrieval request is unsuccessful and including the further step of converting said retrieval request to Unicode text encoding based on any text encodings installed in said memory device.
 23. The computer-readable medium of claim 18 wherein said step of searching is unsuccessful and including the further steps of: determining if Roman text encoding is a default text encoding in said memory device; if Roman text encoding is not a default text encoding, then using Roman text encoding to convert said retrieval request to Unicode text encoding; and repeating said step of searching.
 24. The computer-readable medium of claim 17 wherein said searching step is unsuccessful and including the further steps of: converting said filename to Unicode text encoding based on Roman text encoding; and repeating said step of searching. 